
#ifndef SEMANTICS_FIELD_H

#define SEMANTICS_FIELD_H

#include "semantics_expression.h"
#include "syntax_tree.h"
#include "generic_table.h"


class SemanticsFieldVariable
{
public:
	SemanticsFieldVariable();
	~SemanticsFieldVariable();

	int ArrayCount;

	GenericTable<int> * Name;
	SemanticsExpression * Expression;

	int CurrentContext;

#ifdef DEBUG
	void DebugXMLOutput(FILE * fo);
#endif
};



class SemanticsField
{
public:
	SemanticsField();
	~SemanticsField();

	bool ModifierPrivate;
	bool ModifierPublic;
	bool ModifierProtected;
	bool ModifierStatic;
	bool ModifierConst;

	SemanticsDataType * DataType;

	int CurrentContext;

	GenericTable<SemanticsFieldVariable> * Variables;

#ifdef DEBUG
	void DebugXMLOutput(FILE * fo);
#endif
};




class SemanticsFieldSingle
{
public:
	SemanticsFieldSingle();
	~SemanticsFieldSingle();

	bool ModifierPrivate;
	bool ModifierPublic;
	bool ModifierProtected;
	bool ModifierStatic;
	bool ModifierConst;

	SemanticsDataType * DataType;
	int ArrayCount;

	SemanticsExpression * Expression;

	GenericTable<int> * Name;

	int CurrentContext;

#ifdef DEBUG
	void DebugXMLOutput(FILE * fo);
#endif
};


#endif
